using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.SessionState;

public partial class Login : System.Web.UI.Page
{
    //controladoras para obtener la cuenta del usuario y verificar que es valida y el perfil
    private CuentasCtrl ctrlCuentas = new CuentasCtrl();
    private PerfilesCtrl ctrlPerfiles = new PerfilesCtrl();

    //se limpian todas las variables de la sesion para que ingrese y no halla conflicots
    protected void Page_Init(object sender, EventArgs e)
    {

        Session.RemoveAll();
        Session.Clear();
    }

    protected void Page_Load(object sender, EventArgs e)
    {

        Session.RemoveAll();
        Session.Clear();
    }

    //autentica lo ingresado por el usuario
    protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
    {
        //obitene la cuenta que posee el usuario y el password, de no existir la cuenta es nula
        CuentasEnt cuenta = ctrlCuentas.ConsultarCuenta(Login1.UserName, Login1.Password);

        if (cuenta != null)
        {
            //obtiene el perfil relacionado con la cuenta
            PerfilesEnt perfil = ctrlPerfiles.ConsultarPerfil(cuenta.Perfil);

            //almacena los datos del usuario para uso en otros frames
            Session["Login"] = Login1.UserName;
            Session["Perfil"] = (perfil.Nombre == "Administrador") ? true : false;
            Session["Id"] = cuenta.Id;

            //crea variables de permisos para uso en otros frames con todos los permisos
            foreach (PermisosEnt permiso in perfil.lstPermisos)
            {
                if (permiso.Id != 0)
                {
                    Session[permiso.Modulo + permiso.Acceso] = true;
                }
                else
                {
                    Session[permiso.Modulo + permiso.Acceso] = false;
                }
            }

            //envia al usuario al frame de ceuntas para observarla
            Response.Redirect("Cuentas.aspx");
            
        }
    }
}
